/**
 * 
 */
package com.thor.palmmall.spi.chart;

import java.util.List;

import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import com.thor.palmmall.spi.common.SResponse;

/**
 * @author NuoSa
 *
 * @since 1.0
 */
@Path("/1/report")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public interface SChartService {

  @POST
  @Path("/monitor-report")
  SResponse<SMonitorReport> getMoitorReport(SMonitorParam monitorParam);

  @POST
  @Path("/stores-report")
  SResponse<List<SAppMainReport>> getStoreReport(SLoginInfo loginInfo);

  @POST
  @Path("/sales-report")
  SResponse<List<SSalesReport>> getSalesReport(SChartParam chartParam);

  @POST
  @Path("/rental-report")
  SResponse<SRentalReport> getRentalReport(SRentalParam rentalParam);

  @POST
  @Path("/receipt-report")
  SResponse<SReceiptReport> getReceiptReport(SReceiptParam receiptParam);

  @POST
  @Path("/statistic/sales-report-type")
  SResponse<List<SSalesType>> getSalesReportType(SSalesTypeParam salesTypeParam);

  @POST
  @Path("/ordinary/sales-report-type")
  SResponse<SOrdinarySalesType> getOrdinarySalesReportType(SOrdinarySalesTypeParam salesTypeParam);

  @POST
  @Path("/passengers-report")
  SResponse<List<SPassengersReport>> getPassengersReport(SPassengersReportParam pasParam);

  @POST
  @Path(value = "/sales-report-range")
  SResponse<List<SSalesReportData>> getSalesReport(SSalesInputReportCondition condition);

  @POST
  @Path(value = "/maintain/static-report")
  SResponse<SMaintainReportData> getMaintainReport(SMaintainReportCondition condition);

  @POST
  @Path(value = "/maintain/repair-report")
  SResponse<List<SMaintainRepairData>> getRepairReport(SMaintainReportCondition condition);

  @POST
  @Path(value = "/maintain/category-report")
  SResponse<List<SMaintainCategoryData>> getCategoryReport(SMaintainReportCondition condition);

}
